package ar.edu.utn.frsf.tpae.a2014.g03.presentation.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;

import ar.edu.utn.frsf.tpae.a2014.g03.enums.EstadoPedidoEnum;
import ar.edu.utn.frsf.tpae.a2014.g03.persistence.model.Administrativo;
import ar.edu.utn.frsf.tpae.a2014.g03.persistence.model.Pedido;
import ar.edu.utn.frsf.tpae.a2014.g03.persistence.model.Transportista;
import ar.edu.utn.frsf.tpae.a2014.g03.presentation.util.ServiceLocator;

@ManagedBean(name="actualizarPedidoBean")
@SessionScoped
public class ActualizarPedidoBean implements Serializable {

	private static final long serialVersionUID = 4028166847831796515L;

	@ManagedProperty(value="#{usuarioBean.usuario}")
	private Transportista transportista;
	
	private Pedido pedido;
	
	private Date fechaOperacion;

	private EstadoPedidoEnum estado;
		
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	
	public String viewDialogActualizarOrden(Integer idPedido) {
		/*System.out.println("viewDialogActualizarOrden....");
		Map<String,Object> options = new HashMap<String, Object>();
        options.put("modal", true);
        options.put("draggable", false);
        options.put("resizable", false);
        options.put("contentHeight", 260);*/
        pedido=ServiceLocator.getPedidoService().findById(idPedido);
        estado=EstadoPedidoEnum.EMPTY;
        fechaOperacion=new Date();
        return "/actualizarOrden.xhtml";
        //RequestContext.getCurrentInstance().openDialog("actualizarOrden.xhtml", options, null);
    }
	
	public String actualizarOrden(){		
		ServiceLocator.getPedidoService().update(pedido, estado, "", fechaOperacion);
		return "/consultaPedidos-Transp.xhtml";
	}
		
	public EstadoPedidoEnum[] getEstados(){
		List<EstadoPedidoEnum> estados=new ArrayList<EstadoPedidoEnum>();
		estados.add(EstadoPedidoEnum.ENTREGADO);
		if(!pedido.getEstado().equals(EstadoPedidoEnum.EN_TRANSPORTE.getDescripcion())){
			estados.add(0, EstadoPedidoEnum.EN_TRANSPORTE);
		}		
		return estados.toArray(new EstadoPedidoEnum[estados.size()]);
	}

	public Pedido getPedido() {
		return pedido;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
	}

	public Date getFechaOperacion() {
		return fechaOperacion;
	}

	public void setFechaOperacion(Date fechaOperacion) {
		this.fechaOperacion = fechaOperacion;
	}

	public EstadoPedidoEnum getEstado() {
		return estado;
	}

	public void setEstado(EstadoPedidoEnum estado) {
		this.estado = estado;
	}
	
	public void setTransportista(Transportista transportista) {
		this.transportista = transportista;
	}
	
	public Transportista getTransportista() {
		return transportista;
	}
}

